package cn.tedu.v1_1;


import java.io.*;
import java.net.ConnectException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.rmi.UnexpectedException;
import java.util.Scanner;
/**
 * 聊天室Version1.1  【写软件没有顺序---只有业务逻辑】
 * 功能：服务器端启动【申请：端口号】---客户端连接服务器【IP+端口】---写出
 * 客户端完成哪些功能：
 * 1.客户端：私有化Socket通讯---目的：客户端Client类中  任意位置使用socket
 * 2.客户端：构造器中，传入IP并且指定端口号【捕获所有异常：创建时候异常
 *                                                运行时候异常 】
 * 3.客户端：start方法：目的：IO流  写出
 *
 *
 * 新增哪些功能：异常明确化
 */



public class Client {

    private Socket socket;


    public Client() {
        try {
            socket=new Socket("127.0.0.1",6666);
        }catch(UnknownHostException e){
            System.out.println("友情提示：IP传入错误");

        }
        catch (IOException e) {
            System.out.println("客户端连接服务器失败，提示：检查IP/端口号");
        }
    }



    public void start() {

        PrintWriter pw=null;

        try {
           OutputStream os=socket.getOutputStream();

          InputStream  is=socket.getInputStream();


          OutputStreamWriter  osw=new OutputStreamWriter(os,"UTF8");

          InputStreamReader  isr=new InputStreamReader(is,"UTF8");


        BufferedWriter    bw=new BufferedWriter(osw);

            BufferedReader br=new BufferedReader(isr);


            pw=new PrintWriter(bw,true);






            System.out.println("对服务器端说话：");
            Scanner input=new Scanner(System.in);
            String line=null;
            while(true){

                line=input.nextLine();
                pw.println(line);
                System.out.println("写出成功over,并且暴打鸡蛋卷100下");

            }
        } catch(UnsupportedEncodingException e){
            System.out.println("客户端/服务器端编码集有错误");

        }catch(NullPointerException e){
            System.out.println("友情提示：IP传入错误导致链接失败");
        }catch (ConnectException e){
            System.out.println("客户端连接失败，建议检查IP或者端口号");
        }
        catch (IOException e) {
            System.out.println("客户端连接服务器：IO流操作出现错误");
        } finally {
            if(pw!=null){
                try {
                    pw.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }

    }

    public static void main(String[] args) throws IOException {

        Client client=new Client();
        client.start();
    }
}